/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.mindbox.mueblesalpes.negocio.reportes;

import com.mindbox.mueblesalpes.negocio.entity.Cliente;
import com.mindbox.mueblesalpes.negocio.entity.Compra;
import com.mindbox.mueblesalpes.negocio.entity.FormaPago;
import com.mindbox.mueblesalpes.negocio.entity.Mueble;
import com.mindbox.mueblesalpes.negocio.entity.MuebleInventario;
import com.mindbox.mueblesalpes.negocio.entity.MuebleReporte;
import com.mindbox.mueblesalpes.negocio.entity.TipoMueble;
import com.mindbox.mueblesalpes.negocio.entity.Venta;
import com.mindbox.mueblesalpes.negocio.geo.Ciudad;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.Stateless;

/**
 *
 * @author Catalina
 */
@Stateless
public class ReportesEJB implements IReportes {

    public ReportesEJB() {
        System.out.println("creo un ReportesEJB");
    }

    @PostConstruct
    public void init() {
        System.out.println("creo un ReportesEJB");
    }



    public ReporteVenta generarReporteVentas(Date fechaIni, Date fechaFin, Ciudad ciudad) throws Exception {
        ReporteVenta rep = new ReporteVenta();

        rep.setCiudad(ciudad);
        rep.setFechaIni(fechaIni);
        rep.setFechaFin(fechaFin);
        rep.setFechaReporte(new Date());
        List<MuebleInventario> interior = new ArrayList();
        MuebleInventario mi1 = new MuebleInventario();
        Mueble m1 = new Mueble();
        m1.setNombre("Escritorio");
        mi1.setPrecio(250000d);
        mi1.setCantidad(2);
        mi1.setMueble(m1);
        interior.add(mi1);

        MuebleInventario mi2 = new MuebleInventario();
        Mueble m2 = new Mueble();
        m2.setNombre("Salita");
        mi2.setPrecio(35660000d);
        mi2.setCantidad(1);
        mi2.setMueble(m2);
        interior.add(mi2);

        MuebleInventario mi3 = new MuebleInventario();
        Mueble m3 = new Mueble();
        m3.setNombre("Silla Estudio");
        mi3.setPrecio(85000d);
        mi3.setCantidad(2);
        mi3.setMueble(m3);
        interior.add(mi3);
        
        
        List<MuebleInventario> exterior = new ArrayList();
        MuebleInventario mi4 = new MuebleInventario();
        Mueble m4 = new Mueble();
        m4.setNombre("Silla Playera");
        mi4.setPrecio(250000d);
        mi4.setCantidad(2);
        mi4.setMueble(m4);
        exterior.add(mi4);


        MuebleInventario mi5 = new MuebleInventario();
        Mueble m5 = new Mueble();
        m5.setNombre("Mesa Rimax Parasol");
        mi5.setPrecio(438999d);
        mi5.setCantidad(2);
        mi5.setMueble(m5);
        exterior.add(mi5);

        rep.setListExterior(exterior);
        rep.setListInterior(interior);


        for (MuebleInventario ext : exterior) {
            rep.setTotalExterior( rep.getTotalExterior() + (ext.getCantidad() * ext.getPrecio()) );
        }

        for (MuebleInventario inter : interior) {
            rep.setTotalInterior( rep.getTotalInterior() + (inter.getCantidad() * inter.getPrecio()) );
        }

        return rep;





    }


    public ReporteTop generarReporteProductoTop(Date fechaIni, Date fechaFin, Ciudad ciudad, int cantidad) throws Exception {

        ReporteTop rep = new ReporteTop();
        rep.setCiudad(ciudad);
        rep.setFechaIni(fechaIni);
        rep.setFechaFin(fechaFin);
        rep.setFechaReporte(new Date());
        List muebles = new ArrayList();

        MuebleReporte mi1 = new MuebleReporte();
        Mueble m1 = new Mueble();
        m1.setNombre("Escritorio");
        m1.setTipoMueble(TipoMueble.INTERIOR);
        mi1.setPrecio(250000d);
        mi1.setCantidad(2);
        mi1.setCiudad(ciudad);
        mi1.setMueble(m1)
                ;
        muebles.add(mi1);

        Ciudad mzles = new Ciudad("Manizales");

        MuebleReporte mi4 = new MuebleReporte();
        Mueble m4 = new Mueble();
        m4.setNombre("Silla Playera");
        m4.setTipoMueble(TipoMueble.EXTERIOR);
        mi4.setPrecio(250000d);
        mi4.setCiudad(mzles);
        mi4.setMueble(m4);
        muebles.add(mi4);




        MuebleReporte mi3 = new MuebleReporte();
        Mueble m3 = new Mueble();
        m3.setNombre("Silla Estudio");
        m3.setTipoMueble(TipoMueble.INTERIOR);
        mi3.setPrecio(85000d);
        mi3.setCantidad(2);
        mi3.setCiudad(ciudad);
        mi3.setMueble(m3);
        muebles.add(mi3);

        
        MuebleReporte mi2 = new MuebleReporte();
        Mueble m2 = new Mueble();
        m2.setNombre("Salita");
        m2.setTipoMueble(TipoMueble.INTERIOR);
        mi2.setPrecio(35660000d);
        mi2.setCantidad(1);
        mi2.setMueble(m2);
        mi2.setCiudad(ciudad);
        muebles.add(mi2);

        rep.setListMuebles(muebles);

        return rep;


    }


    public ReporteCompras generarReporteCompras(Cliente cliente, Date fechaIni, Date fechaFin, Ciudad ciudad) throws Exception {

        ReporteCompras rep = new ReporteCompras();
        rep.setCiudad(ciudad);
        rep.setFechaIni(fechaIni);
        rep.setFechaFin(fechaFin);
        rep.setFechaReporte(new Date());

        List<Venta> ventas = new ArrayList<Venta>();
        Venta v1 = new Venta();

        Ciudad city1 = new Ciudad("Bogotá");
        System.out.println(" cliente= "+cliente.getNombreCompleto());
        cliente.setCiudadResidencia(city1);
        cliente.setEmail("jaimoto81@gmail.com");
        cliente.setNumeroDocumento("52802234");

        

        v1.setCliente(cliente);
        v1.setValorTotal(566778);
        v1.setFormaPago(FormaPago.TARJETA_CREDITO);

        List<Compra> compras = new ArrayList<Compra>();
        Compra compra1 = new Compra();
        Mueble mueble1 = new Mueble();
        mueble1.setNombre("Silla");
        mueble1.setTipoMueble(TipoMueble.INTERIOR);
        Mueble mueble2 = new Mueble();
        mueble2.setNombre("Meson");
        mueble2.setTipoMueble(TipoMueble.EXTERIOR);
        compra1.setMueble(mueble2);
        compra1.setCantidad(2);
        compra1.setPrecio(85000d);
        compras.add(compra1);
        v1.setCompras(compras);
        v1.setValorTotal(170000d);
        ventas.add(v1);


        List<Compra> compras2 = new ArrayList<Compra>();
        Venta v2 = new Venta();
        Compra compra2 = new Compra();
        Compra compra3 = new Compra();
        Mueble mueble3 = new Mueble();
        mueble3.setNombre("Escritorio");
        mueble3.setTipoMueble(TipoMueble.INTERIOR);
        compra2.setMueble(mueble3);
        compra2.setCantidad(1);
        compra2.setPrecio(165888d);

        compra3.setMueble(mueble2);
        compra3.setCantidad(1);
        compra3.setPrecio(85000d);

        v2.setCliente(cliente);
        compras2.add(compra2);
        compras2.add(compra3);
        v2.setCompras(compras2);
        v2.setValorTotal(250888d);
        ventas.add(v2);

        rep.setListCompras(ventas);
        
        


        return rep;

    }

}

